package hdu1276;

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Scanner;

/*
hdu1276,1p79
输入数据：
2
20
40
输出：
1 7 19
1 19 37
 * */

class MyLink{
	int val;
	int size=0;
	MyLink prev;
	MyLink next;
	//初始化
	public MyLink(int v) {
		val = v;
		prev = null;
		next = null;
	}
}

public class UseMyLink {
	//自定义链表与Java链表两种做法
	public static void main(String[] args) {
		int T,n;
		//自定义链表,带头节点
		MyLink lnkHead;
		Scanner sc = new Scanner(System.in);
		
		T = sc.nextInt();
		
		//T大于0时继续循环，T自身减1
		while(T-- > 0) {
			n = sc.nextInt(); //初始士兵数量
			//清空初始化自定义链表
			lnkHead = new MyLink(-1);
			//保存自定义链表当前结点
			MyLink curNode = lnkHead;
			
			//第一次删除喊2的士兵
			int k=2;
			
			//初始编号存入链表
			for(int i=1;i<=n;i++) {
				//自定义链表加节点操作
				MyLink newNode = new MyLink(i);
				newNode.prev = curNode;
				curNode.next = newNode;
				curNode = newNode;
				lnkHead.size++;
			}
			
			//自定义链表操作
			while(lnkHead.size>3) {
				int cnt = 1;//当前报号的编号
				
				//遍历链表
				//自定义链表当前节点 
			    curNode = lnkHead.next; 
			    while(curNode!=null) {
			    	
			    	//判断当前报数是否到k的值
			    	//判断完后cnt自身加1
			    	if(cnt++%k==0) {
			    		//删除当前项
			    		MyLink next = curNode.next;
			    		//修改前一个结点的下一项
			    		curNode = curNode.prev;
			    		curNode.next = next;
			    		//修改下一个结点的前一项
			    		if(curNode.next!=null)
			    			curNode.next.prev = curNode;
			    		//链表计数减一
			    		lnkHead.size--;
			    	}
			    	
			    	//指向链表下一项
			    	curNode = curNode.next;
			    }
				//k在2和3之间切换
			    if(k==2) {
			    	k=3;
			    }else {
			    	k=2;
			    }
			}
			
			//输出自定义链表
			curNode = lnkHead.next;
			while(curNode != null) {
				System.out.printf("%d ",curNode.val);
				curNode = curNode.next;
			}
			System.out.println();
			
		}
	}
}
